#Agenda Python + SQLite
'''
Python é auto explicável, em todas as classes e respectivos métodos,
é possível adicionar trechos comentados com três aspas simples como,
esse para documentar o seu sistema inteiro e poder acessar futuramente
apenas chamando "print(Contato.__doc__)".
'''
import sqlite3

#cria o banco de dados caso não existe ou apenas abre o banco SQLite existente.
conecta = sqlite3.connect('contatosPython.db')

#cria objeto do banco de dados como cursor
db = conecta.cursor()

class Contato:
    '''
    Aqui entra a documentação da sua classe. O mesmo pode ser usado para as funções abaixo
    '''
    #o texto entre aspas acima funciona como uma documentação do sistema
    #pode ser chamado a qualquer momento com uma instrução "Contato.__doc__"
    #já este
    
    def __init__(self):
        print("Objeto contato instanciado!")

    def criaBanco(self):
        db.execute("CREATE TABLE IF NOT EXISTS contatos (id INTEGER PRIMARY KEY AUTOINCREMENT, nome TEXT, email TEXT)")
        conecta.commit()
        print("Banco \"contatosPython.db\" criado com sucesso!")

    def addContato(self, nome, email):
        db.execute("INSERT INTO contatos (nome, email) VALUES (?, ?)",(nome, email))
        conecta.commit()
        print("Contato salvo com sucesso!")
        self.listarContatos()

    def listarContatos(self):
        linhas = db.execute("SELECT * FROM contatos ORDER BY nome")
        #total = len(linhas.fetchall())
        #print("Total de Contatos: "+str(total))
        for linha in linhas:
            print(str(linha[0])+"| Nome: "+linha[1]+" | E-mail: "+linha[2])
